
//2090.半径为k的子数组平均值
class Solution {
    public:
        vector<int> getAverages(vector<int>& nums, int k) {
            int n=nums.size();
            vector<int> ret(n,-1);   //ret作为返回值，将ret数组均初始化为-1来解决左右两边元素不足的问题
            if(k==0) return nums;   //对特殊情况处理
            if(n<=2*k) return ret;   //当k值较大的时候，就不需要进入循环了
            int left=0,right=0;
            long long tmp=0;      //注意：此处需要使用long long，因为测试用例比较恶心使用int会已出
            while(right<n)
            {
                //入窗口
                while(right<n&&right-left+1<=2*k+1)
                tmp+=nums[right++];
                
                //对答案进行更新
                int mid=(right-1+left)/2;
                ret[mid]=tmp/(2*k+1);
    
                //出窗口
                tmp-=nums[left++];
            }
            return ret;
        }
    };